Oracle 在其技术白皮书上阐明,Oracle 10g数据库关键目标有二:1 降低管理开销,2 提高性能。 Oracle 10g的增强有对高可用性的增强、新的 Flashback 能力、支持
回滚更新操作;对安全性的增强,便于管理大量的用户; BI 方面的增强 , 包括改进的 SQL 能力、分析功能、 OLAP 、数据挖掘的能力等;对非关系型数据存储的能力得到了改进; XML 的能力;对开发能力支持的加强,对生物信息学( Bioinformatics )的支持。
性能与扩展能力
1.对新的架构支持
对 Intel 64 位平台的支持。支持 infiniband 。极大地改进了多层开发架构下的性能和可扩展能力。新的版本也借用了 Windows操作系统对 Fiber 支持的优势。
2.高速数据处理能力
在这个版本中,一个新类型的表对象被引入。该表结构对大量插入和解析数据很有益处。这个表结构对 FIFO 的数据处理应用有着很好的支持。这样的应用在电信、生产应用中常常能够用到。通过使用这种优化的表结构能够对电信级的应用起到巨大的性能改进作用。
3.RAC workload 管理
一个新的
服务框架。使得管理员作为服务来设置、管理监视应用负载。
4.针对 OLAP 的分区
通过对哈希分区的全局索引的支持可以提供大量的并发插入的能力
5.新的改进的调度器( Scheduler )
引入了一个新的数据库调度器,提供企业级调度功能。这个调度器可以使得管理员有能力在特定日期、特定时间调度 Job 。还有能力创建调度对象的库能够和既有的对象被其他的用户共享。
可管理性
这个版本的 Oracle 的一个引人注目之处就是管理上的极大简化。大量复杂的配置和部署设置被取消或者简化。常见的操作过程被自动化。对不同区域的大多数调整和管理操作得到简化。
1.简化的数据库配置与升级
提供了预升级检查能力,有效地减少升级错误。 去除了了很多和数据库配置有关的任务或者对其加以自动化。在初始安装的时候,所有数据库都被预配置包括在 OEM 环境中而无需建立一个管理资料库。补丁程序可以自动标记并自动从 Oracle Metalink 下载。
新版本的数据库能够配置成使用 Oracle 提供的存储虚拟层( Storage Virtualization Layer) 。自动并简化数据库的存储。管理员可以管理少数的磁盘组而无需管理数千个文件--自动存储管理功能可以自动 配置磁盘组,提供
数据冗余和数据的优化分配。
3.自动的基于磁盘备份与恢复
10G也极大的简化了备份与恢复操作。这个改进被称作Disk based Recovery Area ,可以被一个联机Disk Cache 用来进行备份与恢复操作。备份可以调度成自动化操作,自动化优化调整。备份失败的时候,可以自动重启,以确保 Oracle 能够有一个一致的环境使用。
4.应用优化
以前的版本中, DBA 更多时候要手工对 SQL 语句进行优化调整。这里引入了一些新的工具,从此 DBA 无需手工做这些累人的事情。(这样的说法似乎有些太绝对)
5.自动化统计收集
为对象自动化收集优化统计。
6.自动化实例调整
DBA需要干预的越来越少么? 好消息还是坏消息?
7.自动化内存调整
上一个版本对 UGA 能够进行自动化 Tuning ,这版本能够对 SGA 相关的参数进行调整。这意味着 DBA 只需要对2 个
内存参数进行配置:用户可用的总的内存数量和共享区的大小。
高可用性的加强
1.缩短应用和数据库升级的宕机时间
通过使用 standby 数据库。允许在不同版本的 standby 和产品数据库间切换。现有的联机重定义功能能够支持一步克隆所有相关的
数据库对象。
2.回闪 (Flashback) 任何错误
该版本的 Oracle 也扩展了 Flashback 的能力。加了一个新类型的 Log 文件,该文件记录了数据库块的变化。这个新的 Log 文件也被自动磁盘备份和恢复功能所管理。如果有错误发生,例如针对不成功的
批处理操作,DBA 可以运行 FlashBack。用这些 before Images 快速恢复整个数据库到先前的时间点--无须进行恢复操作,这个新功能也可以用到 Standby 数据库中。
Flashback 是数据库级别的操作,也能回闪整个表。既有的 FlashBack 查询的能力也已经加强。在这个版本中,管理员能够快速查看特定
事务导致的变化。
3.Enhanced Data Guard Infrastructure
4.安全的加强
VPD 得到了改进 ( 希望这次名字不会换成别的 ),支持更多的安全协议。
DATA INTEGRATION
1.Oracle streams 这个版本也包括Oracle streams功能、性能以及管理上的改进。新功能包括对产品数据库downstream capture/ offloading the capture 和挖掘操作等。对 LONG、LONG RAW、NCLOB 等数据类型支持加强。对IOT/
级联删除得到加强,性能也得到提升。
2.Data Pump
Oracle Data Pump--高速、并行的技术架构,能够快速的在数据库间移动数据与元数据。最初的 Export/Import 被 Data Pump Export/Data Pump Import所取代,并提供了完美粒度的对象选择性。Data Pump 操作具有可恢复性。相比 Exp/Imp,有了很大的改进。归档数据、
逻辑备份的数据和可传输的
表空间都可以用 Data Pump 来操作。
这个特性和NCR的产品工具有很大的相似性(连名字都很相似),究竟功能性能会怎样,还是让我们拭目以待。
商务智能
(BIOINFORMATICS)
1.超大数据库的支持
可支持到 8E 的数据量。改进的存储、备份、恢复管理也对超大数据库有着很好的支持。分区可以支持索引组织表。
新版本的 Oracle 提供了加强的 ETL 功能。可以方便的构建大型数据仓库和多个数据集市。一个新的变化数据捕捉的框架允许管理员能够轻易的捕捉并发布数据的变化。新的 CDC 功能利用的是 Oracle 的 Stream 技术架构。
对于大数据量的转移,新版本提供了对可传输表的跨平台的支持,允许大批量数据快速从数据库上的脱离并附接到第二个数据库上。
3.增强的外部表功能
4.SQL Loader 的功能加强
5.增强的 SQL 分析能力
SQL 语句的功能针对 BI 得到了极大地增强。
6.增强的 OLAP 分析功能
Oracle 内建的分析功能得到增强。提供了新的基于 PL/SQL 和 XML 的接口。
提供了新的并行能力,以便于进行聚合和 SQL IMPERT 操作。一些算法得到改进。同时 OEM 能够用来监视并管理数据挖掘环境。
7.BIOINFORMATICS 的支持
这个版本包含对 BIOINFORMATICS 技术的特定支持。包括对 Double 和 Float数据类型的 Native 支持。内建的统计函数支持常见的 ANOVA 分析等。
8.改进的数据挖掘的能力
扩展数据
1.XML 方面的增强
2.多媒体
在前面的版本中,存在着媒体文件4G的限制。媒体文件的 4G 大小限制去掉了(限制是:8-128T)。通过 SQL多媒体标准能够访问多媒体数据。对更多的新的多媒体格式提供支持。
3.文档和文本管理
提供了自动发现未知文档的语言和
字符集的功能。支持新的 German 拼写规则 Japanese adverb 等等。
本地分区的文本索引可以联机创建。文档可以在索引创建和重建的时候插入。文档服务,如高亮功能无须重建索引。检索文档的能力也得到提高。
应用开发方面的加强
1、SQL 语言的加强
SQL 和 PL/SQL 对
正则表达式支持。激动人心的一个特性,这个特性怕是要改写很多人编程的习惯了。或许能见到一条 SQL 语句完成更为复杂的功能。这个版本还支持
表达式过滤的功能。
2、PL/SQL 的增强
最重要的当数新的 PL/SQL 优化
编译器,提供了一个框架有效地优化编译 PL/SQL 程序。 这个版本还引入了两个新的数据库包:UTL_COMPRESS、UTL_MAIL。
3、全球化和 Unicode 的增强提供了Globalization Development Kit (GDK)。Oracle NLS
定义文件开始具有平台无关性.
4、Java Improvements
对 JDBC 更好的支持。
其他信息
OCCI 和 Pre Compilers 的改进; 数据库 Web 服务的改进; 基于 Web 的开发环境的加强等 .
平台支持
Oracle系统一般运行于
HP-UX,或是
AIX平台。这些大型UNIX系统都不会用于桌面系统,一般用来运行Oracle、Sybase、DB2等大型
数据库系统。其系统构建、实施、运维、高可用设置,有其平台特点。可参看一本极具特色的技术专著《Oracle大型数据库系统在AIX / UNIX上的实战详解》。该书以AIX 等大型UNIX平台为主线,以其他UNIX系统如HP-UX系统为参照,描述了Oracle10g、Oracle 11g数据库系统在这些平台上的构架方法、
集群化要素、综合
容灾手段等。.
死锁解决办法
大家通常会遇到这种现象,在自己web项目首页使用用户名,密码登陆系统时,始终停留在本页面,无法进入系统,或是在执行某些操作后,系统一直处在等待状态,不出结果,后台也无任何错误提醒。此时,很大的可能就是数据库锁等待,所要查询的包含用户名和密码的表或是用户正操作的表正在被占用造成的。
锁等待的现象:程序在执行的过程中,点击确定或保存按钮,程序没有响应,也没有出现报错。
网上有很多人把这种现象称为死锁,是不合理的。此时的oracle并未发生任何死锁现象,只是它一直在等待使用者前一个操作的提交。
产生锁等待的原因:当对于数据库某个表的某一列做更新或删除等操作,执行完毕后该条语句不提交,另一条对于这一列数据做更新操作的语句在执行的时候就会处于等待状态,此时的现象是这条语句一直在执行,但一直没有执行成功,也没有报错。
锁等待定位方法:
Sql代码
select sql_text from v where hash_value in
(select sql_hash_value from v where sid in select session_id from v)
Sql代码
SELECT s.username,l.OBJECT_ID,l.SESSION_ID,s.SERIAL#,
l.ORACLE_USERNAME,l.OS_USER_NAME,l.PROCESS
FROM V l,V S WHERE l.SESSION_ID=S.SID;
以上两种方法皆可以,不过查询出来的属性不同,可以根据个人需要选择。其中有一种方法速度较快,但我忘记是哪一种了,您若遇到数据库出现和锁等待相符的现象,可以用这两种方法查询试一下,若得到结果,则说明确实发生锁等待现象了。
单个解决锁等待的方法:
Sql代码
alter system kill session 'sid, serial#'
其中的sid和serial可以通过上面锁等待定位方法的第二个方法得到,sid对应SESSION_ID,serial#对应SERIAL#。例如:
Sql代码
alter system kill session '130,2';
我通常会遇到上千个锁,实在没办法一个一个的kill掉了,所以我通常使用下述批量解锁方法。
批量解锁方法:
注:此方法应在plsql中运行
Sql代码
declare cursor mycur is
select b.sid,b.serial#
from v a,v b
where a.session_id = b.sid group by b.sid,b.serial#;
begin
for cur in mycur loop
execute immediate ( 'alter system kill session '''||cur.sid || ','|| cur.SERIAL# ||''' ');
end loop;
end;